/* Javascript Document */

var width_btn_nav = 10;
var width_diapo = 100;
var height_diapo = 100;
var space_diapo = 10;
var spostamento = -(width_diapo+space_diapo);
var step = 5;
var immaginivisibili = 5;
var ultima = 0;
var statoANIMAZIONE = 0;
var offset = 5;
var carica = [];




function setGallery(){
	
	
	//VALUTA DIMENSIONI

	assegnaID();
	
	//SETTAGGI COMUNI
	
	//Setto grandezza dei tasti di navigazione
	$('.galleria .next, .galleria .back').width(width_btn_nav);
	$('.galleria').width($('.galleria_outer').width()-(width_btn_nav*2)).css({ 'top': 0, 'left': width_btn_nav , 'height': $('.galleria_outer').height()});
	
	//Setto dimensione dei li
	$('.galleria li').width(width_diapo).height(height_diapo).css({'margin-right':space_diapo+'px'});
	//La dimensione degli ul viene settata dalla funzione assegnaID Che lancia set_dimensione_ul 
	
	
	///////////////////////////////////////////////////////////////////////
	//FUNZIONI INTERNE
	///////////////////////////////////////////////////////////////////////
	
	function assegnaID(){
	//ASSEGNA GLI ID DELLE GALLERY E LANCIA il dimensionamento
		$('.galleria_outer').each(function(index) {

		$(this).attr('id', 'gal_' + index);
		
		generaStep(index);
		set_dimensione_ul(index);
		valutaDimensione(index);
		settaDimensioneImmagini(index);
				
		})
			
	}
	
	///////////////////////////////////////////////////////////////////////
	
	function set_dimensione_ul(idPassato){
	//SETTA LA DIMENSIONE DEGLI UL VIENE LANCIATO DA ASSEGNA ID
	
		$('#gal_' + idPassato + ' .galleria ul').width((width_diapo+space_diapo) * num_slide(idPassato))
	
	}
	
	///////////////////////////////////////////////////////////////////////
		
	function num_slide(idPassato){
	//CONTA LE IMMAGINI PRESENTI CONTENUTE IN UNA DETERMINATA GALLERY	
		var num = 0;
		
		$('#gal_' + idPassato + ' .galleria li').each(function(index) {
			++num;	
		})
		
		return num; 
		
	}
	
	///////////////////////////////////////////////////////////////////////
	
	function generaStep(idPassato){
	
	//VALORIZZO ALCUNI VALORI NEL CONTENITORE PRINCIPALE DI OGNI GALLERY	
		$('#gal_' + idPassato + ' .galleria ul').data('valori', {
		
			lunghezzaGallery : (num_slide(idPassato)-1)
		
		});
		
		riposizionaClip(idPassato);	

	}

	///////////////////////////////////////////////////////////////////////
	
	function riposizionaClip(idPassato){
	//SPOSTA IL CLIP a left = 0
	
		$('#gal_' + idPassato + ' .galleria ul').css({'left':0+'px'})
		
	}
	
	///////////////////////////////////////////////////////////////////////
	
	function assegnaFunzioni(idPassato){
		
	//ASSEGNA FUNZIONI DI NAVIGAZIONE
		$('#gal_' + idPassato + ' .next').click(function() {
			if(statoANIMAZIONE == 0){
			
				muoviGallery("next", idPassato);
			
			}
	
		})
		$('#gal_' + idPassato + ' .back').click(function() {
			if(statoANIMAZIONE == 0) {
				
				muoviGallery("back", idPassato);
			}
		})
		
	}
	
	///////////////////////////////////////////////////////////////////////
	
	function valutaDimensione(idPassato){
	//VALUTA DIMENSIONE DELLA GALLERY SE IL NUMERO DELLE IMMAGINI VISIBILI è UGUALE 
	//AL NUMERO DEGLI SLIDE ALLORA NON ASSEGNA LE FUNZIONI AI PULSANTI
	
		if(num_slide(idPassato) <= immaginivisibili){

			//NON ASSEGNA FUNZIONE
			
		}else{
			
			assegnaFunzioni(idPassato);
		
		}
		
	}
	///////////////////////////////////////////////////////////////////////
	
	function muoviGallery(direzione, idPassato){
	
		if(direzione=="next"){
			
			
			primaSpostamenento("next", idPassato);
			$('#gal_' + idPassato + ' .galleria ul').animate( {
				"left" : "-=" + (width_diapo+space_diapo)*step + "px"
				}, "slow", function() {
			//FINE MOVIMENTO ESEGUI:
				dopoSpostamento("next", idPassato);
			})
					
			
		}
		
		if(direzione=="back"){
			
				primaSpostamenento("back", idPassato);
				
			$('#gal_' + idPassato + ' .galleria ul').animate( {
					"left" : "+=" + (width_diapo+space_diapo)*step + "px"
					}, "slow", function() {
				//FINE MOVIMENTO ESEGUI:
					dopoSpostamento("back", idPassato);
				})
		}
	}

	///////////////////////////////////////////////////////////////////////
	
		function primaSpostamenento(direzione, idPassato){
			
			//QUESTO VALORE GLOBALE DISABILITA IL PULSANTE DI NAVIGAZIONE BACK E NEXT SE = 1
			//SERVE PER NON RICHIAMARE LA FUNZIONE muoviGallery() durante l'animazione
			statoANIMAZIONE = 1;
			//
			
			if(direzione=="next"){
				
				for(i=0;i<step;i++){
					
					$('#gal_' + idPassato + ' .galleria li:eq('+i+')').clone().appendTo($('#gal_' + idPassato + ' .galleria ul'));
				
				}
							
				$('#gal_' + idPassato + ' .galleria ul').width(	$('#gal_' + idPassato + ' .galleria ul').width()+((width_diapo+space_diapo)*step));
			}
			
			if(direzione=="back"){	
				
				
				ultima = num_slide(idPassato);
				
				for(i=0;i<step;i++){
					
					current = ultima - i-1;
					
					imagec = $('#gal_' + idPassato + ' .galleria li img:eq(' + current + ')').attr('src');
					stylec = $('#gal_' + idPassato + ' .galleria li:eq(' + current + ')').attr('style');
					
					urlc = $('#gal_' + idPassato + ' .galleria li:eq(' + current + ') a').attr('href');
					
					completa = '<li style="' + stylec + '"><a href="'+urlc+'" target="_blank"><img src="'+imagec+'"></a></li>'
						
					carica.push(completa);
					
					
					
				}
				
				for(e=0;e<carica.length;e++){
				
					$(carica[e]).prependTo($('#gal_' + idPassato + ' .galleria ul'));
				
				}
				
							
			carica=[];
				
			settaDimensioneImmagini(idPassato)
			
			$('#gal_' + idPassato + ' .galleria ul').width(	$('#gal_' + idPassato + ' .galleria ul').width()+((width_diapo+space_diapo)*step));
			
			$('#gal_' + idPassato + ' .galleria ul').css({'left':-((width_diapo+space_diapo)*step)});
			
			
			}
			
		}	
	
	///////////////////////////////////////////////////////////////////////
	
		function dopoSpostamento(direzione, idPassato){
			
			//QUESTO VALORE GLOBALE DISABILITA IL PULSANTE DI NAVIGAZIONE BACK E NEXT SE = 1
			//SERVE PER NON RICHIAMARE LA FUNZIONE muoviGallery() durante l'animazione
			statoANIMAZIONE = 0;
			//
			
			if(direzione=="next"){
				
				for(i=0; i<step; i++){
					
					$('#gal_' + idPassato + ' .galleria li:eq(0)').remove();
					
				}

					riposizionaClip(idPassato);
				
				
				$('#gal_' + idPassato + ' .galleria ul').width(	$('#gal_' + idPassato + ' .galleria ul').width()-((width_diapo+space_diapo)*step));	
					
			}
			
			if(direzione=="back"){
				
				ultima = num_slide(idPassato);
				
				for(i=0; i<step; i++){
					
					$('#gal_' + idPassato + ' .galleria li:last').remove();	

				}
				
				
				$('#gal_' + idPassato + ' .galleria ul').width(	$('#gal_' + idPassato + ' .galleria ul').width()-(width_diapo+space_diapo)*step);	
				
			}
			
		
		}
	
	
}

function settaDimensioneImmagini(idPassato){
//RIDIMENSIONA LE IMMAGINI e LE CENTRA
     
   var basewidth = 0;
   
   $('#gal_' + idPassato + ' .galleria li img').each(function(index) {
   
      var maxWidth = width_diapo -(offset*2); 
       var maxHeight = height_diapo -(offset*2);
       var ratio = 0;  // Used for aspect ratio
       var width = $(this).width();    // Current image width
       var height = $(this).height();  // Current image height
       
      if(width > maxWidth){
         
         $(this).css("left", offset+"px")
         ratio = maxWidth / width;   // get ratio for scaling image
         $(this).css("width", maxWidth); // Set new width
         $(this).css("height", height * ratio);  // Scale height based on ratio
         height = height * ratio;    // Reset height to match scaled image
         basewidth = $(this).width();
         
      }
      if(width < maxWidth){
         
         posLeft = ((width_diapo/2)-$(this).width()/2);
         $(this).css("left", posLeft+"px")	
      
      }
   
      if(height > maxHeight){
      
         ratio = maxHeight / height; 
         $(this).css("height", maxHeight);   
         $(this).css("width", width * ratio);    // Scale width based on ratio
         width = width * ratio;    // Reset width to match scaled image
      
      }
      
      if(height < maxHeight){
      
         posTop = ((height_diapo/2)-$(this).height()/2) 
         $(this).css("top", posTop+"px")	
         
      }
   
   })

}


function loading(stato){
	
	 	//MOSTRA MESSAGGIO CARICAMNETO e attiva le immagini quandcompletato
	
		if(stato){
			$('.galleria').fadeIn('slow', function() {
				// Animation complete elimina loading
				$('.loading').remove();
				
			});
         $('.galleria_outer').each(function(index) {
									settaDimensioneImmagini(index);
										
			})
		}else{
			$('<div class="loading">Loading in corso<span>...</span><div>').appendTo('.galleria_outer');	
		}

}


$(document).ready(function(){
 	loading(0);
	setGallery();
	
})

$(window).load( 
	function (){
		loading(1)
});



